From f2fabb9e4e95326191163347b77702a2a0c3ad0b Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Tue, 18 Oct 2005 11:07:55 +0100 Subject: [PATCH] Fix x86_64 smp boot: The local_setup_timer prototype was bad. The call from start secondary() to it was calling with out the CPU parameter. Eventually the CPU parameter received by the local_setup_timer is bogus (big negative number). With such a big cpu number the per_cpu macro was trying to access totally wrong memory location (per cpu data offset for big -ve no cpu) causing the unhandled page fault. Because the dom0 was panicking the error information on the serial console was also not going through, giving just clueless hang. With hyper call based debug statement I could find out what was going wrong in the dom0. Signed-Off-By: Nitin A Kamble --- linux-2.6-xen-sparse/arch/xen/x86_64/kernel/smpboot.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/smpboot.c b/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/smpboot.c index b48b559a45..8529c9e5db 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/smpboot.c +++ b/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/smpboot.c @@ -445,7 +445,7 @@ void __cpuinit smp_callin(void) } #ifdef CONFIG_XEN -extern void local_setup_timer(void); +extern void local_setup_timer(unsigned int cpu); #endif /* @@ -478,7 +478,7 @@ void __cpuinit start_secondary(void) enable_APIC_timer(); #else - local_setup_timer(); + local_setup_timer(smp_processor_id()); smp_intr_init(); local_irq_enable(); #endif -- 2.30.2